import connect from "@/utils/mongodb";
import Comment from "@/model/Comment";
import { NextResponse } from "next/server";

// 获取评论列表（GET 请求）
export const GET = async (request) => {
  try {
    await connect();

    // 从 URL 中解析查询参数（Next.js 13+ App Router 写法）
    const { searchParams } = new URL(request.url);
    const search = searchParams.get('search') || ''; // 搜索关键词
    const status = searchParams.get('status') || 'all'; // 状态筛选

    // 构建查询条件
    let query = {};
    if (search) {
      query.$or = [
        { name: { $regex: search, $options: 'i' } },    // 模糊匹配姓名
        { email: { $regex: search, $options: 'i' } },   // 模糊匹配邮箱
        { content: { $regex: search, $options: 'i' } }  // 模糊匹配内容
      ];
    }
    if (status && status !== 'all') {
      query.status = status; // 筛选特定状态的评论
    }

    // 查询评论并按创建时间倒序排列
    const comments = await Comment.find(query).sort({ createdAt: -1 });

    // 统一返回格式（与 POST 保持一致）
    return NextResponse.json({
      message: "获取全部评论成功",
      success: true,
      data: comments // 评论数组
    });
  } catch (error) {
    return NextResponse.json({
      message: "获取全部评论失败",
      success: false,
      error: error.message // 错误信息
    }, { status: 500 });
  }
};

// 提交新评论（POST 请求）
export const POST = async (request) => {
  let name, email, content;
  try {
    const data = await request.json();
    name = data.name;
    email = data.email;
    content = data.content;
  } catch (error) {
    console.error('请求体解析失败:', error);
    return NextResponse.json({
      message: "请输入参数 name, email, content",
      success: false
    }, { status: 400 });
  }

  // 打印调试日志
  console.log('提交评论 - 姓名:', name);
  console.log('提交评论 - 邮箱:', email);
  console.log('提交评论 - 内容:', content);

  // 参数完整性校验
  if (!name || !email || !content) {
    return NextResponse.json({
      message: "请输入参数 name, email, content",
      success: false
    }, { status: 400 });
  }

  // 参数格式校验
  if (name.length > 50) {
    return NextResponse.json({
      message: "姓名长度不能超过50个字符",
      success: false
    }, { status: 400 });
  }
  if (!/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(email)) {
    return NextResponse.json({
      message: "请输入有效的邮箱地址",
      success: false
    }, { status: 400 });
  }
  if (content.length < 2 || content.length > 2000) {
    return NextResponse.json({
      message: "留言内容长度必须在2-2000个字符之间",
      success: false
    }, { status: 400 });
  }

  try {
    await connect();

    // 创建并保存评论（默认添加 status 字段，默认为 'pending' 待审核）
    const newComment = new Comment({
      name,
      email,
      content,
      status: 'pending' // 新增状态字段，用于后续审核
    });
    await newComment.save();

    return NextResponse.json({
      message: "留言保存成功",
      success: true,
      data: {
        id: newComment._id,
        createdAt: newComment.createdAt,
        status: newComment.status // 返回状态
      }
    }, { status: 201 });
  } catch (error) {
    console.error('留言保存失败:', error);
    if (error.code === 11000) {
      return NextResponse.json({
        message: "该内容已提交过",
        success: false
      }, { status: 409 });
    }
    return NextResponse.json({
      message: "留言保存失败",
      success: false
    }, { status: 500 });
  }
};